/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package compilador.analisadorSintatico.classe;

import compilador.analisadorLexico.PalavraReservada;
import compilador.analisadorLexico.Token;
import compilador.analisadorSintatico.Producao;
import compilador.analisadorSintatico.TokenReader;
import compilador.analisadorSintatico.simboloGramatical.NaoTerminal;
import compilador.analisadorSintatico.simboloGramatical.SimboloGramatical;
import compilador.analisadorSintatico.simboloGramatical.Terminal;

/**
 *
 * @author nelson
 */
public class TIPO_PRIMITIVO extends Producao{

    @Override
    public SimboloGramatical derivar() throws Exception {
        //pega a instância do tokenReader
        TokenReader tokenReader =  TokenReader.getInstance();
        //consome o primeiro token
        Token t = tokenReader.seeCurrent();


        if(t.getAtributo().equals(PalavraReservada.CHAR)){
            ((NaoTerminal) simbolo).add(new Terminal(tokenReader.consome()));
        }else if(t.getAtributo().equals(PalavraReservada.INT)){
            ((NaoTerminal) simbolo).add(new Terminal(tokenReader.consome()));
        }else{
             erro("Tipo inválido");
        }

        return simbolo;
    }

    @Override
    public void setSimbolo() {
        simbolo = new NaoTerminal("TIPO_PRIMITIVO");
    }

}